iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
1
Modern Web

認識LIFF容易嗎?系列 第 17

[Day17] LIFF GetProfile

  • 分享至 

  • xImage
  •  

前言

先前有提過在取得用戶資訊前,我們需要先取得其access_token。
今天要認識的liff.getProfile(),其實與[Day 13] LIFF GetAccessToken有關。
繼續看下去吧!Go!

liff.getProfile()

取得用戶的userId、暱稱、大頭貼URL和個性簽名。

實際上,liff.getProfile()是透過HTTP GET對https://api.line.me/v2/profile發送請求。
在請求的header中,須包含access_token。

所以執行此方法前,用戶須先登入。因為登入之後,才會有access_token。

如果請求發送成功的話,會回傳一個物件:

{
  "userId":"U4af4980629...", // 用戶的userId
  "displayName":"Brown", // 用戶的暱稱
  "pictureUrl":"https://profile.line-scdn.net/abcdefghijklmn", // 用戶的大頭貼
  "statusMessage":"Hello, LINE!" // 用戶的個性簽名
}

UserId

記得在玩Messaging API的時候,一直看到userId,滿頭問號的想這到底是什麼。

後來找到這篇,它的說明是這樣的:
每一個LINE用戶帳號都有一個專屬的內部識別碼,稱為User ID。User ID與LINE用戶自訂的LINE ID的格式與用途完全不同。 開發Messaging API應用程式時,無論是接受訊息、傳送訊息、或是存取其他API,皆必須使用User ID來代表LINE用戶。

User ID的特色就是每一個LINE用戶在每一個公司/組織的LINE平台開發帳號都有該公司/組織專屬的識別碼,也就是相同公司/組織下的每個Messaging API帳號聯繫相同的LINE用戶會使用一樣的User ID,而不同公司/組織的Messaging API帳號聯繫相同的LINE用戶就必須使用各自不同的User ID。如此確保每一個公司/組織都無法取得或使用其他公司/組織專屬的User ID,保障公司/組織與LINE用戶的隱私安全。

很長一段文字,看完可能還似懂非懂,不如搭配一張圖:
image

實作

liff.init({
 liffId: '後台取得的LIFF ID'
}) .then(() => {
  if (!liff.isLoggedIn()) {
   alert("用戶未登入");
   liff.login();
  } else {
   alert("用戶已登入");
   liff.getProfile()
   .then(profile => {
    const name = profile.displayName
   })
   .catch((err) => {
    console.log('error', err);
   });
  }
}
}).catch((err) => {
 console.log('初始化失敗')
});

參考


上一篇
[Day16] LIFF GetContext
下一篇
[Day 18] LIFF GetFriendship
系列文
認識LIFF容易嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言